package rpg.data
{

	import rpg.data.GameData;
	import rpg.manager.DataManager;

	public dynamic class FightState extends GameData
	{

		/**
		 * 显示图标
		 */
		public var icon : int;

		/**
		 *  能否攻击
		 */
		public var fightable : int;

		/**
		 *  增加移动时间（max450）
		 */
		public var stepTimeRate : int;

		/**
		 *  增加移动间隔
		 */
		public var moveDelayRate : int;

		/**
		 *  增加攻击时间(max800)
		 */
		public var attackTimeRate : int;

		/**
		 *  增加攻击间隔
		 */
		public var attackDelayRate : int;

		/**
		 *  增加物理攻击比例
		 */
		public var physicalDamageRate : int;

		/**
		 *  增加物理防御
		 */
		public var physicalDefenseRate : int;

		/**
		 *  增加魔法攻击比例
		 */
		public var magicDamageRate : int;

		/**
		 *  增加魔法防御
		 */
		public var magicDefenseRate : int;

		/**
		 *  增加命中
		 */
		public var hittingAbilityRate : int;

		/**
		 *  增加躲闪
		 */
		public var evadingAbilityRate : int;

		/**
		 *  增加生命上限值
		 */
		public var raisedLifeRate : int;

		/**
		 *  增加法力上限值
		 */
		public var raizedManaRate : int;

		/**
		 *  起效延迟时间
		 */
		public var delayTime : int;

		/**
		 *  每次时间间隔
		 */
		public var frameTime : int;

		/**
		 *  持续次数
		 */
		public var totalFrames : int;

		/**
		 *  每次加生命当前值
		 */
		public var hpPerTime : int;

		/**
		 *  每次加魔法当前值
		 */
		public var mpPerTime : int;

		/**
		 *  每次加生命百分比
		 */
		public var hpPerPercent : int;

		/**
		 *  每次加魔法百分比
		 */
		public var mpPerPercent : int;

		/**
		 *  隐形状态
		 */
		public var clarity : int;

		/**
		 *  沉默状态
		 */
		public var hush : int;

		/**
		 *  正\负面状态(1正，0负)
		 */
		public var buffOrDebuff : int;

		/**
		 *  无敌状态
		 */
		public var invincibly : int;

		/**
		 *  是否死亡后被驱散
		 */
		public var isDeathDispel : int;

		/**
		 *  是否能被法术驱散
		 */
		public var isCanDispel : int;

		/**
		 *  是否过场景驱散
		 */
		public var isSceneDispel : int;

		/**
		 *  经验倍率
		 */
		public var expRate : int;

		/**
		 *  状态类型
		 */
		public var stateType : int;

		/**
		 *  战斗状态驱散
		 */
		public var isBattleDispel : int;

		/**
		 *  移动驱散
		 */
		public var isMoveDispel : int;

		/**
		 *  简介
		 */
		public var description : String;

		/**
		 *
		 */
		public var changedStepTime : int;

		/**
		 *
		 */
		public var changedMoveDelay : int;

		/**
		 *
		 */
		public var changedAttackTime : int;

		/**
		 *
		 */
		public var changedAttackDelay : int;

		/**
		 *
		 */
		public var changedPhysicalDamage : int;

		/**
		 *
		 */
		public var changedPhysicalDefense : int;

		/**
		 *
		 */
		public var changedMagicDamage : int;

		/**
		 *
		 */
		public var changedMagicDefense : int;

		/**
		 *
		 */
		public var changedHittingAbility : int;

		/**
		 *
		 */
		public var changedEvadingAbility : int;

		/**
		 *
		 */
		public var changedMaxLife : int;

		/**
		 *
		 */
		public var changedMaxMana : int;


		/**
		 *  等级
		 */
		public var level : int;

		/**
		 *  能否移动
		 */
		public var movable : int;

		/**
		 *  每次产生的仇恨
		 */
		public var enmityPerTime : int;

		/**
		 *
		 */
		public var lastWorkTime : Number;

		/**
		 *
		 */
		public var remainedTimes : int;

		/**
		 *
		 */
		public var userData : Object;


		/**
		 * 改变的属性
		 */
		public var spriteStat : int;

		/**
		 * 变身的资源 , 有内容就变身
		 */
		public var transformInto : String = "";

		/**
		 * 服务器时间戳结束时间  状态的结束时间，对应服务器的时间
		 */
		public var endTime : Number = -1;

		//配置的动画
		public var animation : String;

		/**
		 * 组，角色身上在同一组中只能存在一个状态,按等级优先
		 */
		public var group : int;

		/**
		 * 颜色板 oyzm
		 */
		public var colorTransform : String;

		/**
		 * 触发动作
		 */
		public var actionName : String;

		/**
		 * 动作循环次数
		 */
		public var actionLoops : int = 1;


		public function FightState()
		{

		}

		public function hasSpriteStat() : Boolean
		{
			return spriteStat > 0;
		}

		/**
		 * 该状态是否为光环
		 * @return
		 */
		public function get isHalo() : Boolean
		{
			return endTime == 0;
		}

		public function getAnimation() : SpellAnimation
		{
			return DataManager.getInstance().spellsAnimation[animation];
		}
	}
}